#ifndef XKIT_COLLECTIONS_MAP_H
#define XKIT_COLLECTIONS_MAP_H

#include "../ref.h"
#include <stdbool.h>

typedef struct MapHeader {
    losu_object umap;
} MapHeader;

MapHeader *MapInit(losu_vm_t vm);
void MapFree(losu_vm_t vm, MapHeader *h);
void MapPut(losu_vm_t vm, MapHeader *h, losu_object_t key, losu_object_t value);
void MapGet(losu_vm_t vm, MapHeader *h, losu_object_t key, losu_object_t target);
void MapRemove(losu_vm_t vm, MapHeader *h, losu_object_t key);
bool MapExists(losu_vm_t vm, MapHeader *h, losu_object_t key);
size_t MapSize(losu_vm_t vm, MapHeader *h);

#endif
